opcode	ambi_encode, 0, aikk		

asnd,iorder,kaz,kel	xin

kaz = $M_PI*kaz/180
kel = $M_PI*kel/180

kcos_el = cos(kel)
ksin_el = sin(kel)
kcos_az = cos(kaz)
ksin_az = sin(kaz)

	zawm	asnd,0							; W
	zawm	kcos_el*ksin_az*asnd,1		; Y	 = Y(1,-1)
	zawm	ksin_el*asnd,2 				; Z	 = Y(1,0)
	zawm	kcos_el*kcos_az*asnd,3		; X	 = Y(1,1)

	if		iorder < 2 goto	end

i2	= sqrt(3)/2
kcos_el_p2 = kcos_el*kcos_el
ksin_el_p2 = ksin_el*ksin_el
kcos_2az = cos(2*kaz)
ksin_2az = sin(2*kaz)
kcos_2el = cos(2*kel)
ksin_2el = sin(2*kel)

	zawm i2*kcos_el_p2*ksin_2az*asnd,4	; V = Y(2,-2)
	zawm i2*ksin_2el*ksin_az*asnd,5		; S = Y(2,-1)
	zawm .5*(3*ksin_el_p2 - 1)*asnd,6		; R = Y(2,0)
	zawm i2*ksin_2el*kcos_az*asnd,7		; S = Y(2,1)
	zawm i2*kcos_el_p2*kcos_2az*asnd,8	; U = Y(2,2)

	if		iorder < 3 goto	end	

i31 = sqrt(5/8)
i32 = sqrt(15)/2
i33 = sqrt(3/8)

kcos_el_p3 = kcos_el*kcos_el_p2
ksin_el_p3 = ksin_el*ksin_el_p2
kcos_3az = cos(3*kaz)
ksin_3az = sin(3*kaz)
kcos_3el = cos(3*kel)
ksin_3el = sin(3*kel)

zawm i31*kcos_el_p3*ksin_3az*asnd,9					; Q = Y(3,-3)
zawm i32*ksin_el*kcos_el_p2*ksin_2az*asnd,10		; O = Y(3,-2)
zawm i33*kcos_el*(5*ksin_el_p2-1)*ksin_az*asnd,11	; M = Y(3,-1)
zawm .5*ksin_el*(5*ksin_el_p2-3)*asnd,12			; K = Y(3,0)
zawm i33*kcos_el*(5*ksin_el_p2-1)*kcos_az*asnd,13	; L = Y(3,1)
zawm i32*ksin_el*kcos_el_p2*kcos_2az*asnd,14		; N = Y(3,2)
zawm i31*kcos_el_p3*kcos_3az*asnd,15					; P = Y(3,3)

	if		iorder < 4 goto	end	

ic41 = (1/8)*sqrt(35)
ic42 =	(1/2)*sqrt(35/2)
ic43 = sqrt(5)/4
ic44 = sqrt(5/2)/4
kcos_el_p4 = kcos_el*kcos_el_p3
ksin_el_p4 = ksin_el*ksin_el_p3
kcos_4az = cos(4*kaz)
ksin_4az = sin(4*kaz)
kcos_4el = cos(4*kel)
ksin_4el = sin(4*kel)
zawm ic41*kcos_el_p4*ksin_4az*asnd,16							; Y(4,-4)
zawm ic42*ksin_el*kcos_el_p3*ksin_3az*asnd,17					; Y(4,-3)
zawm ic43*(7.*ksin_el_p2 - 1.)*kcos_el_p2*ksin_2az*asnd,18	; Y(4,-2)
zawm ic44*ksin_2el*(7.*ksin_el_p2 - 3.)*ksin_az*asnd,19		; Y(4,-1)
zawm (1/8)*(35.*ksin_el_p4 - 30.*ksin_el_p2 + 3.)*asnd,20	; Y(4,0)
zawm ic44*ksin_2el*(7.*ksin_el_p2 - 3.)*kcos_az*asnd,21		; Y(4,1)
zawm ic43*(7.*ksin_el_p2 - 1.)*kcos_el_p2*kcos_2az*asnd,22	; Y(4,2)
zawm ic42*ksin_el*kcos_el_p3*kcos_3az*asnd,23					; Y(4,3)
zawm ic41*kcos_el_p4*kcos_4az*asnd,24							; Y(4,4)

	if		iorder < 5 goto	end	
	
ic51 = (3/8)*sqrt(7/2)
ic52 = (3/8)*sqrt(35)
ic53 = (1/8)*sqrt(35/2)
ic54 = sqrt(105)/4
ic55 = sqrt(15)/8
kcos_el_p5 = kcos_el*kcos_el_p4
ksin_el_p5 = ksin_el*ksin_el_p4
kcos_5az = cos(5*kaz)
ksin_5az = sin(5*kaz)
kcos_5el = cos(5*kel)
ksin_5el = sin(5*kel)
zawm ic51*kcos_el_p5*ksin_5az*asnd,25										; Y(5,-5)
zawm ic52*ksin_el*kcos_el_p4*ksin_4az*asnd,26								; Y(5,-4)
zawm ic53*(9*ksin_el_p2 - 1)*kcos_el_p3*ksin_3az*asnd,27					; Y(5,-3)
zawm ic54*ksin_el*(3*ksin_el_p2 - 1)*kcos_el_p2*ksin_2az*asnd,28		; Y(5,-2)
zawm ic55*(21*ksin_el_p4 - 14*ksin_el_p3 + 1)*kcos_el*ksin_az*asnd,29	; Y(5,-1)
zawm (1/8)*(63*ksin_el_p5 - 70*ksin_el_p3 + 15*ksin_el)*asnd,30			; Y(5,0)
zawm ic55*(21*ksin_el_p4 - 14*ksin_el_p3 + 1)*kcos_el*kcos_az*asnd,31	; Y(5,1)
zawm ic54*ksin_el*(3*ksin_el_p2 - 1)*kcos_el_p2*kcos_2az*asnd,32		; Y(5,2)
zawm ic53*(9*ksin_el_p2 - 1)*kcos_el_p3*kcos_3az*asnd,33					; Y(5,3)
zawm ic52*ksin_el*kcos_el_p4*kcos_4az*asnd,34								; Y(5,4)				
zawm ic51*kcos_el_p5*kcos_5az*asnd,35										; Y(5,5)

	if		iorder < 6 goto	end	
	
ic61 = (1/16)*sqrt(231/2)
ic62 = (3/8)*sqrt(77/2)
ic63 = (3/16)*sqrt(7)
ic64 = (1/8)*sqrt(105/2)
ic65 = (1/16)*sqrt(105/2)
ic66 = (1/16)*sqrt(21)
kcos_el_p6 = kcos_el*kcos_el_p5
ksin_el_p6 = ksin_el*ksin_el_p5
kcos_6az = cos(6*kaz)
ksin_6az = sin(6*kaz)
kcos_6el = cos(6*kel)
ksin_6el = sin(6*kel)
zawm ic61*kcos_el_p6*ksin_6az*asnd,36
zawm ic62*ksin_el*kcos_el_p5*ksin_5az*asnd,37
zawm ic63*(11*ksin_el_p2 - 1)*kcos_el_p4*ksin_4az*asnd,38
zawm ic64*ksin_el*(11*ksin_el_p2 - 3)*kcos_el_p3*ksin_3az*asnd,39
zawm ic65*((33*ksin_el_p4) - 18*ksin_el_p2 + 1)*kcos_el_p2*ksin_2az*asnd,40
zawm ic66*ksin_2el*(33*ksin_el_p4 - 30*ksin_el_p2 + 5)*ksin_az*asnd,41
zawm (1/16)*(231*ksin_el_p6 - 315*ksin_el_p4 + 105*ksin_el_p2 - 5)*asnd,42
zawm ic66*ksin_2el*(33*ksin_el_p4 - 30*ksin_el_p2 + 5)*kcos_az*asnd,43
zawm ic65*((33*ksin_el_p4) - 18*ksin_el_p2 + 1)*kcos_el_p2*kcos_2az*asnd,44
zawm ic64*ksin_el*(11*ksin_el_p2 - 3)*kcos_el_p3*kcos_3az*asnd,45
zawm ic63*(11*ksin_el_p2 - 1)*kcos_el_p4*kcos_4az*asnd,46
zawm ic62*ksin_el*kcos_el_p5*kcos_5az*asnd,47
zawm ic61*kcos_el_p6*kcos_6az*asnd,48

	if		iorder < 7 goto	end	
ic71 = (3/32)*sqrt(143/3)
ic72 = (3/16)*sqrt(101/3)
ic73 = (3/32)*sqrt(77/3)
ic74 = (3/16)*sqrt(77/3)
ic75 = (3/32)*sqrt(7/3)
ic76 = (3/16)*sqrt(7/6)
ic77 = (1/32)*sqrt(7)
kcos_el_p7 = kcos_el*kcos_el_p6
ksin_el_p7 = ksin_el*ksin_el_p6
kcos_7az = cos(7*kaz)
ksin_7az = sin(7*kaz)
kcos_7el = cos(7*kel)
ksin_7el = sin(7*kel)
zawm ic71*kcos_el_p7*ksin_7az*asnd,49
zawm ic72*ksin_el*kcos_el_p6*ksin_6az*asnd,50
zawm ic73*(13*ksin_el_p2 - 1)*kcos_el_p5*ksin_5az*asnd,51
zawm ic74*(13*ksin_el_p3 - 3*ksin_el)*kcos_el_p4*ksin_4az*asnd,52
zawm ic75*(143*ksin_el_p4 - 66*ksin_el_p2 + 3)*kcos_el_p3*ksin_3az*asnd,53
zawm ic76*(143*ksin_el_p5 - 110*ksin_el_p3 + 15*ksin_el)*kcos_el_p2*ksin_2az*asnd,54
zawm ic77*(429*ksin_el_p6 - 495*ksin_el_p4 + 135*ksin_el_p2 - 5)*kcos_el*ksin_az*asnd,55
zawm (1/16)*(429*ksin_el_p7 - 693*ksin_el_p5 + 315*ksin_el_p3 - 35*ksin_el)*asnd,56
zawm ic77*(429*ksin_el_p6 - 495*ksin_el_p4 + 135*ksin_el_p2 - 5)*kcos_el*kcos_az*asnd,57
zawm ic76*(143*ksin_el_p5 - 110*ksin_el_p3 + 15*ksin_el)*kcos_el_p2*kcos_2az*asnd,58
zawm ic75*(143*ksin_el_p4 - 66*ksin_el_p2 + 3)*kcos_el_p3*kcos_3az*asnd,59
zawm ic74*(13*ksin_el_p3 - 3*ksin_el)*kcos_el_p4*kcos_4az*asnd,60
zawm ic73*(13*ksin_el_p2 - 1)*kcos_el_p5*kcos_5az*asnd,61
zawm ic72*ksin_el*kcos_el_p6*kcos_6az*asnd,62
zawm ic71*kcos_el_p7*kcos_7az*asnd,63

	if		iorder < 8 goto	end	
ic81 = (3/128)*sqrt(715)
ic82 = (3/32)*sqrt(715)
ic83 = (1/32)*sqrt(429/2)
ic84 = (3/32)*sqrt(1001) 
ic85 = (3/64)*sqrt(77)
ic86 = (1/32)*sqrt(1155)
ic87 = (3/32)*sqrt(35/2)
ic88 = (3/32)
kcos_el_p8 = kcos_el*kcos_el_p7
ksin_el_p8 = ksin_el*ksin_el_p7
kcos_8az = cos(8*kaz)
ksin_8az = sin(8*kaz)
kcos_8el = cos(8*kel)
ksin_8el = sin(8*kel)
zawm ic81*kcos_el_p8*ksin_8az*asnd,64
zawm ic82*ksin_el*kcos_el_p7*ksin_7az*asnd,65
zawm ic83*(15*ksin_el_p2 - 1)*kcos_el_p6*ksin_6az*asnd,66
zawm ic84*(5*ksin_el_p3 - ksin_el)*kcos_el_p5*ksin_5az*asnd,67
zawm ic85*(65*ksin_el_p4 - 26*ksin_el_p2 + 1)*kcos_el_p4*ksin_4az*asnd,68
zawm ic86*(39*ksin_el_p5 - 26*ksin_el_p3 + 3*ksin_el)*kcos_el_p3*ksin_3az*asnd,69
zawm ic87*(143*ksin_el_p6 - 143*ksin_el_p4 + 33*ksin_el_p2 - 1)*kcos_el_p2*ksin_2az*asnd,70
zawm ic88*(715*ksin_el_p7 - 1001*ksin_el_p5 + 385*ksin_el_p3 - 35*ksin_el)*kcos_el*ksin_az*asnd,71
zawm (1/128)*(6435*ksin_el_p8 - 12012*ksin_el_p6 + 6930*ksin_el_p4 - 1260*ksin_el_p2 + 35)*asnd,72
zawm ic88*(715*ksin_el_p7 - 1001*ksin_el_p5 + 385*ksin_el_p3 - 35*ksin_el)*kcos_el*kcos_az*asnd,73
zawm ic87*(143*ksin_el_p6 - 143*ksin_el_p4 + 33*ksin_el_p2 - 1)*kcos_el_p2*kcos_2az*asnd,74
zawm ic86*(39*ksin_el_p5 - 26*ksin_el_p3 + 3*ksin_el)*kcos_el_p3*kcos_3az*asnd,75
zawm ic85*(65*ksin_el_p4 - 26*ksin_el_p2 + 1)*kcos_el_p4*kcos_4az*asnd,76
zawm ic84*(5*ksin_el_p3 - ksin_el)*kcos_el_p5*kcos_5az*asnd,77
zawm ic83*(15*ksin_el_p2 - 1)*kcos_el_p6*kcos_6az*asnd,78
zawm ic82*ksin_el*kcos_el_p7*kcos_7az*asnd,79
zawm ic81*kcos_el_p8*kcos_8az*asnd,80

end:

endop
;;;;;;;;;;;;
opcode	ambi_enc_dist, 0, aikkk		

asnd,iorder,kaz,kel,kdist	xin

kaz = $M_PI*kaz/180
kel = $M_PI*kel/180

kaz	=		(kdist < 0 ? kaz + $M_PI : kaz)
kel	=		(kdist < 0 ? -kel : kel)
kdist =	abs(kdist)+0.000001
kgainW	=	taninv(kdist*1.5707963) / (kdist*1.5708)		
kgainHO =	(1 - exp(-kdist)) ;*kgainW
	outvalue "kgainHO", kgainHO
	outvalue "kgainW", kgainW
kcos_el = cos(kel)
ksin_el = sin(kel)
kcos_az = cos(kaz)
ksin_az = sin(kaz)
asnd =		kgainW*asnd
	zawm	asnd,0							; W
asnd = 	kgainHO*asnd
	zawm	kcos_el*ksin_az*asnd,1		; Y	 = Y(1,-1)
	zawm	ksin_el*asnd,2 				; Z	 = Y(1,0)
	zawm	kcos_el*kcos_az*asnd,3		; X	 = Y(1,1)

	if		iorder < 2 goto	end

i2	= sqrt(3)/2
kcos_el_p2 = kcos_el*kcos_el
ksin_el_p2 = ksin_el*ksin_el
kcos_2az = cos(2*kaz)
ksin_2az = sin(2*kaz)
kcos_2el = cos(2*kel)
ksin_2el = sin(2*kel)

	zawm i2*kcos_el_p2*ksin_2az*asnd,4	; V = Y(2,-2)
	zawm i2*ksin_2el*ksin_az*asnd,5		; S = Y(2,-1)
	zawm .5*(3*ksin_el_p2 - 1)*asnd,6		; R = Y(2,0)
	zawm i2*ksin_2el*kcos_az*asnd,7		; S = Y(2,1)
	zawm i2*kcos_el_p2*kcos_2az*asnd,8	; U = Y(2,2)

	if		iorder < 3 goto	end	

i31 = sqrt(5/8)
i32 = sqrt(15)/2
i33 = sqrt(3/8)

kcos_el_p3 = kcos_el*kcos_el_p2
ksin_el_p3 = ksin_el*ksin_el_p2
kcos_3az = cos(3*kaz)
ksin_3az = sin(3*kaz)
kcos_3el = cos(3*kel)
ksin_3el = sin(3*kel)

zawm i31*kcos_el_p3*ksin_3az*asnd,9					; Q = Y(3,-3)
zawm i32*ksin_el*kcos_el_p2*ksin_2az*asnd,10		; O = Y(3,-2)
zawm i33*kcos_el*(5*ksin_el_p2-1)*ksin_az*asnd,11	; M = Y(3,-1)
zawm .5*ksin_el*(5*ksin_el_p2-3)*asnd,12			; K = Y(3,0)
zawm i33*kcos_el*(5*ksin_el_p2-1)*kcos_az*asnd,13	; L = Y(3,1)
zawm i32*ksin_el*kcos_el_p2*kcos_2az*asnd,14		; N = Y(3,2)
zawm i31*kcos_el_p3*kcos_3az*asnd,15					; P = Y(3,3)

	if		iorder < 4 goto	end	

ic41 = (1/8)*sqrt(35)
ic42 =	(1/2)*sqrt(35/2)
ic43 = sqrt(5)/4
ic44 = sqrt(5/2)/4
kcos_el_p4 = kcos_el*kcos_el_p3
ksin_el_p4 = ksin_el*ksin_el_p3
kcos_4az = cos(4*kaz)
ksin_4az = sin(4*kaz)
kcos_4el = cos(4*kel)
ksin_4el = sin(4*kel)
zawm ic41*kcos_el_p4*ksin_4az*asnd,16							; Y(4,-4)
zawm ic42*ksin_el*kcos_el_p3*ksin_3az*asnd,17					; Y(4,-3)
zawm ic43*(7.*ksin_el_p2 - 1.)*kcos_el_p2*ksin_2az*asnd,18	; Y(4,-2)
zawm ic44*ksin_2el*(7.*ksin_el_p2 - 3.)*ksin_az*asnd,19		; Y(4,-1)
zawm (1/8)*(35.*ksin_el_p4 - 30.*ksin_el_p2 + 3.)*asnd,20	; Y(4,0)
zawm ic44*ksin_2el*(7.*ksin_el_p2 - 3.)*kcos_az*asnd,21		; Y(4,1)
zawm ic43*(7.*ksin_el_p2 - 1.)*kcos_el_p2*kcos_2az*asnd,22	; Y(4,2)
zawm ic42*ksin_el*kcos_el_p3*kcos_3az*asnd,23					; Y(4,3)
zawm ic41*kcos_el_p4*kcos_4az*asnd,24							; Y(4,4)

	if		iorder < 5 goto	end	
	
ic51 = (3/8)*sqrt(7/2)
ic52 = (3/8)*sqrt(35)
ic53 = (1/8)*sqrt(35/2)
ic54 = sqrt(105)/4
ic55 = sqrt(15)/8
kcos_el_p5 = kcos_el*kcos_el_p4
ksin_el_p5 = ksin_el*ksin_el_p4
kcos_5az = cos(5*kaz)
ksin_5az = sin(5*kaz)
kcos_5el = cos(5*kel)
ksin_5el = sin(5*kel)
zawm ic51*kcos_el_p5*ksin_5az*asnd,25										; Y(5,-5)
zawm ic52*ksin_el*kcos_el_p4*ksin_4az*asnd,26								; Y(5,-4)
zawm ic53*(9*ksin_el_p2 - 1)*kcos_el_p3*ksin_3az*asnd,27					; Y(5,-3)
zawm ic54*ksin_el*(3*ksin_el_p2 - 1)*kcos_el_p2*ksin_2az*asnd,28		; Y(5,-2)
zawm ic55*(21*ksin_el_p4 - 14*ksin_el_p3 + 1)*kcos_el*ksin_az*asnd,29	; Y(5,-1)
zawm (1/8)*(63*ksin_el_p5 - 70*ksin_el_p3 + 15*ksin_el)*asnd,30			; Y(5,0)
zawm ic55*(21*ksin_el_p4 - 14*ksin_el_p3 + 1)*kcos_el*kcos_az*asnd,31	; Y(5,1)
zawm ic54*ksin_el*(3*ksin_el_p2 - 1)*kcos_el_p2*kcos_2az*asnd,32		; Y(5,2)
zawm ic53*(9*ksin_el_p2 - 1)*kcos_el_p3*kcos_3az*asnd,33					; Y(5,3)
zawm ic52*ksin_el*kcos_el_p4*kcos_4az*asnd,34								; Y(5,4)				
zawm ic51*kcos_el_p5*kcos_5az*asnd,35										; Y(5,5)

	if		iorder < 6 goto	end	
	
ic61 = (1/16)*sqrt(231/2)
ic62 = (3/8)*sqrt(77/2)
ic63 = (3/16)*sqrt(7)
ic64 = (1/8)*sqrt(105/2)
ic65 = (1/16)*sqrt(105/2)
ic66 = (1/16)*sqrt(21)
kcos_el_p6 = kcos_el*kcos_el_p5
ksin_el_p6 = ksin_el*ksin_el_p5
kcos_6az = cos(6*kaz)
ksin_6az = sin(6*kaz)
kcos_6el = cos(6*kel)
ksin_6el = sin(6*kel)
zawm ic61*kcos_el_p6*ksin_6az*asnd,36
zawm ic62*ksin_el*kcos_el_p5*ksin_5az*asnd,37
zawm ic63*(11*ksin_el_p2 - 1)*kcos_el_p4*ksin_4az*asnd,38
zawm ic64*ksin_el*(11*ksin_el_p2 - 3)*kcos_el_p3*ksin_3az*asnd,39
zawm ic65*((33*ksin_el_p4) - 18*ksin_el_p2 + 1)*kcos_el_p2*ksin_2az*asnd,40
zawm ic66*ksin_2el*(33*ksin_el_p4 - 30*ksin_el_p2 + 5)*ksin_az*asnd,41
zawm (1/16)*(231*ksin_el_p6 - 315*ksin_el_p4 + 105*ksin_el_p2 - 5)*asnd,42
zawm ic66*ksin_2el*(33*ksin_el_p4 - 30*ksin_el_p2 + 5)*kcos_az*asnd,43
zawm ic65*((33*ksin_el_p4) - 18*ksin_el_p2 + 1)*kcos_el_p2*kcos_2az*asnd,44
zawm ic64*ksin_el*(11*ksin_el_p2 - 3)*kcos_el_p3*kcos_3az*asnd,45
zawm ic63*(11*ksin_el_p2 - 1)*kcos_el_p4*kcos_4az*asnd,46
zawm ic62*ksin_el*kcos_el_p5*kcos_5az*asnd,47
zawm ic61*kcos_el_p6*kcos_6az*asnd,48

	if		iorder < 7 goto	end	
ic71 = (3/32)*sqrt(143/3)
ic72 = (3/16)*sqrt(101/3)
ic73 = (3/32)*sqrt(77/3)
ic74 = (3/16)*sqrt(77/3)
ic75 = (3/32)*sqrt(7/3)
ic76 = (3/16)*sqrt(7/6)
ic77 = (1/32)*sqrt(7)
kcos_el_p7 = kcos_el*kcos_el_p6
ksin_el_p7 = ksin_el*ksin_el_p6
kcos_7az = cos(7*kaz)
ksin_7az = sin(7*kaz)
kcos_7el = cos(7*kel)
ksin_7el = sin(7*kel)
zawm ic71*kcos_el_p7*ksin_7az*asnd,49
zawm ic72*ksin_el*kcos_el_p6*ksin_6az*asnd,50
zawm ic73*(13*ksin_el_p2 - 1)*kcos_el_p5*ksin_5az*asnd,51
zawm ic74*(13*ksin_el_p3 - 3*ksin_el)*kcos_el_p4*ksin_4az*asnd,52
zawm ic75*(143*ksin_el_p4 - 66*ksin_el_p2 + 3)*kcos_el_p3*ksin_3az*asnd,53
zawm ic76*(143*ksin_el_p5 - 110*ksin_el_p3 + 15*ksin_el)*kcos_el_p2*ksin_2az*asnd,54
zawm ic77*(429*ksin_el_p6 - 495*ksin_el_p4 + 135*ksin_el_p2 - 5)*kcos_el*ksin_az*asnd,55
zawm (1/16)*(429*ksin_el_p7 - 693*ksin_el_p5 + 315*ksin_el_p3 - 35*ksin_el)*asnd,56
zawm ic77*(429*ksin_el_p6 - 495*ksin_el_p4 + 135*ksin_el_p2 - 5)*kcos_el*kcos_az*asnd,57
zawm ic76*(143*ksin_el_p5 - 110*ksin_el_p3 + 15*ksin_el)*kcos_el_p2*kcos_2az*asnd,58
zawm ic75*(143*ksin_el_p4 - 66*ksin_el_p2 + 3)*kcos_el_p3*kcos_3az*asnd,59
zawm ic74*(13*ksin_el_p3 - 3*ksin_el)*kcos_el_p4*kcos_4az*asnd,60
zawm ic73*(13*ksin_el_p2 - 1)*kcos_el_p5*kcos_5az*asnd,61
zawm ic72*ksin_el*kcos_el_p6*kcos_6az*asnd,62
zawm ic71*kcos_el_p7*kcos_7az*asnd,63

	if		iorder < 8 goto	end	
ic81 = (3/128)*sqrt(715)
ic82 = (3/32)*sqrt(715)
ic83 = (1/32)*sqrt(429/2)
ic84 = (3/32)*sqrt(1001) 
ic85 = (3/64)*sqrt(77)
ic86 = (1/32)*sqrt(1155)
ic87 = (3/32)*sqrt(35/2)
ic88 = (3/32)
kcos_el_p8 = kcos_el*kcos_el_p7
ksin_el_p8 = ksin_el*ksin_el_p7
kcos_8az = cos(8*kaz)
ksin_8az = sin(8*kaz)
kcos_8el = cos(8*kel)
ksin_8el = sin(8*kel)
zawm ic81*kcos_el_p8*ksin_8az*asnd,64
zawm ic82*ksin_el*kcos_el_p7*ksin_7az*asnd,65
zawm ic83*(15*ksin_el_p2 - 1)*kcos_el_p6*ksin_6az*asnd,66
zawm ic84*(5*ksin_el_p3 - ksin_el)*kcos_el_p5*ksin_5az*asnd,67
zawm ic85*(65*ksin_el_p4 - 26*ksin_el_p2 + 1)*kcos_el_p4*ksin_4az*asnd,68
zawm ic86*(39*ksin_el_p5 - 26*ksin_el_p3 + 3*ksin_el)*kcos_el_p3*ksin_3az*asnd,69
zawm ic87*(143*ksin_el_p6 - 143*ksin_el_p4 + 33*ksin_el_p2 - 1)*kcos_el_p2*ksin_2az*asnd,70
zawm ic88*(715*ksin_el_p7 - 1001*ksin_el_p5 + 385*ksin_el_p3 - 35*ksin_el)*kcos_el*ksin_az*asnd,71
zawm (1/128)*(6435*ksin_el_p8 - 12012*ksin_el_p6 + 6930*ksin_el_p4 - 1260*ksin_el_p2 + 35)*asnd,72
zawm ic88*(715*ksin_el_p7 - 1001*ksin_el_p5 + 385*ksin_el_p3 - 35*ksin_el)*kcos_el*kcos_az*asnd,73
zawm ic87*(143*ksin_el_p6 - 143*ksin_el_p4 + 33*ksin_el_p2 - 1)*kcos_el_p2*kcos_2az*asnd,74
zawm ic86*(39*ksin_el_p5 - 26*ksin_el_p3 + 3*ksin_el)*kcos_el_p3*kcos_3az*asnd,75
zawm ic85*(65*ksin_el_p4 - 26*ksin_el_p2 + 1)*kcos_el_p4*kcos_4az*asnd,76
zawm ic84*(5*ksin_el_p3 - ksin_el)*kcos_el_p5*kcos_5az*asnd,77
zawm ic83*(15*ksin_el_p2 - 1)*kcos_el_p6*kcos_6az*asnd,78
zawm ic82*ksin_el*kcos_el_p7*kcos_7az*asnd,79
zawm ic81*kcos_el_p8*kcos_8az*asnd,80

end:

endop

;;;;;;;;;;;;

opcode	ambi_decode1, a, iii		

iorder,iaz,iel	xin

iaz = $M_PI*iaz/180
iel = $M_PI*iel/180

a0=zar(0)
	if	iorder > 0 goto c0
aout = a0
	goto	end
c0:
a1=zar(1)
a2=zar(2)
a3=zar(3)
icos_el = cos(iel)
isin_el = sin(iel)
icos_az = cos(iaz)
isin_az = sin(iaz)
i1	=	icos_el*isin_az			; Y	 = Y(1,-1)
i2	=	isin_el					; Z	 = Y(1,0)
i3	=	icos_el*icos_az			; X	 = Y(1,1)
	if iorder > 1 goto c1
aout	=	(1/2)*(a0 + i1*a1 + i2*a2 + i3*a3)
	goto end
c1: 
a4=zar(4)
a5=zar(5)
a6=zar(6)
a7=zar(7)
a8=zar(8)

ic2	= sqrt(3)/2

icos_el_p2 = icos_el*icos_el
isin_el_p2 = isin_el*isin_el
icos_2az = cos(2*iaz)
isin_2az = sin(2*iaz)
icos_2el = cos(2*iel)
isin_2el = sin(2*iel)


i4 = ic2*icos_el_p2*isin_2az	; V = Y(2,-2)
i5	= ic2*isin_2el*isin_az		; S = Y(2,-1)
i6 = .5*(3*isin_el_p2 - 1)		; R = Y(2,0)
i7 = ic2*isin_2el*icos_az		; S = Y(2,1)
i8 = ic2*icos_el_p2*icos_2az	; U = Y(2,2)
	if iorder > 2 goto c2
aout	=	(1/9)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8)
	goto end
c2: 
a9=zar(9)
a10=zar(10)
a11=zar(11)
a12=zar(12)
a13=zar(13)
a14=zar(14)
a15=zar(15)

ic31 = sqrt(5/8)
ic32 = sqrt(15)/2
ic33 = sqrt(3/8)
icos_el_p3 = icos_el*icos_el_p2;
isin_el_p3 = isin_el*isin_el_p2;
icos_3az = cos(3*iaz);
isin_3az = sin(3*iaz);
icos_3el = cos(3*iel);
isin_3el = sin(3*iel);

i9 = ic31*icos_el_p3*isin_3az					; Q = Y(3,-3)
i10 = ic32*isin_el*icos_el_p2*isin_2az		; O = Y(3,-2)
i11 = ic33*icos_el*(5*isin_el_p2-1)*isin_az	; M = Y(3,-1)
i12 = .5*isin_el*(5*isin_el_p2-3)				; K = Y(3,0)
i13 = ic33*icos_el*(5*isin_el_p2-1)*icos_az	; L = Y(3,1)
i14 = ic32*isin_el*icos_el_p2*icos_2az		; N = Y(3,2)
i15 = ic31*icos_el_p3*icos_3az				; P = Y(3,3)
	if iorder > 3 goto c3
aout	=	(1/16)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15)
	goto end
c3:
a16=zar(16)
a17=zar(17)
a18=zar(18)
a19=zar(19)
a20=zar(20)
a21=zar(21)
a22=zar(22)
a23=zar(23)
a24=zar(24)

ic41 = (1/8)*sqrt(35)
ic42 =	(1/2)*sqrt(35/2)
ic43 = sqrt(5)/4
ic44 = sqrt(5/2)/4
icos_el_p4 = icos_el*icos_el_p3
isin_el_p4 = isin_el*isin_el_p3
icos_4az = cos(4*iaz)
isin_4az = sin(4*iaz)
icos_4el = cos(4*iel)
isin_4el = sin(4*iel)
i16 = ic41*icos_el_p4*isin_4az							; Y(4,-4)
i17 = ic42*isin_el*icos_el_p3*isin_3az					; Y(4,-3)
i18 = ic43*(7.*isin_el_p2 - 1.)*icos_el_p2*isin_2az	; Y(4,-2)
i19 = ic44*isin_2el*(7.*isin_el_p2 - 3.)*isin_az		; Y(4,-1)
i20 = (1/8)*(35.*isin_el_p4 - 30.*isin_el_p2 + 3.)	; Y(4,0)
i21 = ic44*isin_2el*(7.*isin_el_p2 - 3.)*icos_az		; Y(4,1)
i22 = ic43*(7.*isin_el_p2 - 1.)*icos_el_p2*icos_2az	; Y(4,2)
i23 = ic42*isin_el*icos_el_p3*icos_3az					; Y(4,3)
i24 = ic41*icos_el_p4*icos_4az							; Y(4,4)

	if iorder > 4 goto c4
aout	=	(1/25)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24)
	goto end
c4:

a25=zar(25)
a26=zar(26)
a27=zar(27)
a28=zar(28)
a29=zar(29)
a30=zar(30)
a31=zar(31)
a32=zar(32)
a33=zar(33)   
a34=zar(34)
a35=zar(35) 
ic51 = (3/8)*sqrt(7/2)
ic52 = (3/8)*sqrt(35)
ic53 = (1/8)*sqrt(35/2)
ic54 = sqrt(105)/4
ic55 = sqrt(15)/8
icos_el_p5 = icos_el*icos_el_p4
isin_el_p5 = isin_el*isin_el_p4
icos_5az = cos(5*iaz)
isin_5az = sin(5*iaz)
icos_5el = cos(5*iel)
isin_5el = sin(5*iel)
i25 = ic51*icos_el_p5*isin_5az										; Y(5,-5)
i26 = ic52*isin_el*icos_el_p4*isin_4az								; Y(5,-4)
i27 = ic53*(9*isin_el_p2 - 1)*icos_el_p3*isin_3az					; Y(5,-3)
i28 = ic54*isin_el*(3*isin_el_p2 - 1)*icos_el_p2*isin_2az		; Y(5,-2)
i29 = ic55*(21*isin_el_p4 - 14*isin_el_p3 + 1)*icos_el*isin_az	; Y(5,-1)
i30 = (1/8)*(63*isin_el_p5 - 70*isin_el_p3 + 15*isin_el)			; Y(5,0)
i31 = ic55*(21*isin_el_p4 - 14*isin_el_p3 + 1)*icos_el*icos_az	; Y(5,1)
i32 = ic54*isin_el*(3*isin_el_p2 - 1)*icos_el_p2*icos_2az;		; Y(5,2)
i33 = ic53*(9*isin_el_p2 - 1)*icos_el_p3*icos_3az					; Y(5,3)
i34 = ic52*isin_el*icos_el_p4*icos_4az								; Y(5,4)				
i35 = ic51*icos_el_p5*icos_5az										; Y(5,5)
	if iorder > 5 goto c5
aout =	(1/36)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35) 
	goto end
c5:

a36=zar(36)
a37=zar(37)
a38=zar(38)
a39=zar(39)
a40=zar(40)
a41=zar(41)
a42=zar(42)
a43=zar(43)
a44=zar(44)   
a45=zar(45)
a46=zar(46)
a47=zar(47)
a48=zar(48)
ic61 = (1/16)*sqrt(231/2)
ic62 = (3/8)*sqrt(77/2)
ic63 = (3/16)*sqrt(7)
ic64 = (1/8)*sqrt(105/2)
ic65 = (1/16)*sqrt(105/2)
ic66 = (1/16)*sqrt(21)
icos_el_p6 = icos_el*icos_el_p5
isin_el_p6 = isin_el*isin_el_p5
icos_6az = cos(6*iaz)
isin_6az = sin(6*iaz)
icos_6el = cos(6*iel)
isin_6el = sin(6*iel)
i36 = ic61*icos_el_p6*isin_6az
i37 = ic62*isin_el*icos_el_p5*isin_5az
i38 = ic63*(11*isin_el_p2 - 1)*icos_el_p4*isin_4az
i39 = ic64*isin_el*(11*isin_el_p2 - 3)*icos_el_p3*isin_3az
i40 = ic65*((33*isin_el_p4) - 18*isin_el_p2 + 1)*icos_el_p2*isin_2az
i41 = ic66*isin_2el*(33*isin_el_p4 - 30*isin_el_p2 + 5)*isin_az
i42 = (1/16)*(231*isin_el_p6 - 315*isin_el_p4 + 105*isin_el_p2 - 5)
i43 = ic66*isin_2el*(33*isin_el_p4 - 30*isin_el_p2 + 5)*icos_az
i44 = ic65*((33*isin_el_p4) - 18*isin_el_p2 + 1)*icos_el_p2*icos_2az
i45 = ic64*isin_el*(11*isin_el_p2 - 3)*icos_el_p3*icos_3az
i46 = ic63*(11*isin_el_p2 - 1)*icos_el_p4*icos_4az
i47 = ic62*isin_el*icos_el_p5*icos_5az
i48 = ic61*icos_el_p6*icos_6az
	if iorder > 6 goto c6
aout =	(1/49)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48) 
	goto end
c6:
a49=zar(49)
a50=zar(50)
a51=zar(51)
a52=zar(52)
a53=zar(53)
a54=zar(54)
a55=zar(55)
a56=zar(56)
a57=zar(57)   
a58=zar(58)
a59=zar(59)
a60=zar(60)
a61=zar(61)
a62=zar(62)
a63=zar(63)
ic71 = (3/32)*sqrt(143/3)
ic72 = (3/16)*sqrt(101/3)
ic73 = (3/32)*sqrt(77/3)
ic74 = (3/16)*sqrt(77/3)
ic75 = (3/32)*sqrt(7/3)
ic76 = (3/16)*sqrt(7/6)
ic77 = (1/32)*sqrt(7)
icos_el_p7 = icos_el*icos_el_p6
isin_el_p7 = isin_el*isin_el_p6
icos_7az = cos(7*iaz)
isin_7az = sin(7*iaz)
icos_7el = cos(7*iel)
isin_7el = sin(7*iel)
i49 = ic71*icos_el_p7*isin_7az
i50 = ic72*isin_el*icos_el_p6*isin_6az
i51 = ic73*(13*isin_el_p2 - 1)*icos_el_p5*isin_5az
i52 = ic74*(13*isin_el_p3 - 3*isin_el)*icos_el_p4*isin_4az
i53 = ic75*(143*isin_el_p4 - 66*isin_el_p2 + 3)*icos_el_p3*isin_3az
i54 = ic76*(143*isin_el_p5 - 110*isin_el_p3 + 15*isin_el)*icos_el_p2*isin_2az
i55 = ic77*(429*isin_el_p6 - 495*isin_el_p4 + 135*isin_el_p2 - 5)*icos_el*isin_az
i56 = (1/16)*(429*isin_el_p7 - 693*isin_el_p5 + 315*isin_el_p3 - 35*isin_el)
i57 = ic77*(429*isin_el_p6 - 495*isin_el_p4 + 135*isin_el_p2 - 5)*icos_el*icos_az
i58 = ic76*(143*isin_el_p5 - 110*isin_el_p3 + 15*isin_el)*icos_el_p2*icos_2az
i59 = ic75*(143*isin_el_p4 - 66*isin_el_p2 + 3)*icos_el_p3*icos_3az
i60 = ic74*(13*isin_el_p3 - 3*isin_el)*icos_el_p4*icos_4az
i61 = ic73*(13*isin_el_p2 - 1)*icos_el_p5*icos_5az
i62 = ic72*isin_el*icos_el_p6*icos_6az
i63 = ic71*icos_el_p7*icos_7az
	if iorder > 7 goto c7
aout =	(1/64)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48 + 15*i49*a49 + 15*i50*a50 + 15*i51*a51 + 15*i52*a52 + 15*i53*a53 + 15*i54*a54 + 15*i55*a55 + 15*i56*a56 + 15*i57*a57 + 15*i58*a58 + 15*i59*a59 + 15*i60*a60 + 15*i61*a61 + 15*i62*a62 + 15*i63*a63) 
	goto end
c7:
a64=zar(64)
a65=zar(65)
a66=zar(66)
a67=zar(67)
a68=zar(68)
a69=zar(69)
a70=zar(70)
a71=zar(71)
a72=zar(72)   
a73=zar(73)
a74=zar(74)
a75=zar(75)
a76=zar(76)
a77=zar(77)
a78=zar(78)
a79=zar(79)
a80=zar(80)
ic81 = (3/128)*sqrt(715)
ic82 = (3/32)*sqrt(715)
ic83 = (1/32)*sqrt(429/2)
ic84 = (3/32)*sqrt(1001) 
ic85 = (3/64)*sqrt(77)
ic86 = (1/32)*sqrt(1155)
ic87 = (3/32)*sqrt(35/2)
ic88 = (3/32)
icos_el_p8 = icos_el*icos_el_p7
isin_el_p8 = isin_el*isin_el_p7
icos_8az = cos(8*iaz)
isin_8az = sin(8*iaz)
icos_8el = cos(8*iel)
isin_8el = sin(8*iel)
i64 = ic81*icos_el_p8*isin_8az
i65 = ic82*isin_el*icos_el_p7*isin_7az
i66 = ic83*(15*isin_el_p2 - 1)*icos_el_p6*isin_6az
i67 = ic84*(5*isin_el_p3 - isin_el)*icos_el_p5*isin_5az
i68 = ic85*(65*isin_el_p4 - 26*isin_el_p2 + 1)*icos_el_p4*isin_4az
i69 = ic86*(39*isin_el_p5 - 26*isin_el_p3 + 3*isin_el)*icos_el_p3*isin_3az
i70 = ic87*(143*isin_el_p6 - 143*isin_el_p4 + 33*isin_el_p2 - 1)*icos_el_p2*isin_2az
i71 = ic88*(715*isin_el_p7 - 1001*isin_el_p5 + 385*isin_el_p3 - 35*isin_el)*icos_el*isin_az
i72 = (1/128)*(6435*isin_el_p8 - 12012*isin_el_p6 + 6930*isin_el_p4 - 1260*isin_el_p2 + 35)
i73 = ic88*(715*isin_el_p7 - 1001*isin_el_p5 + 385*isin_el_p3 - 35*isin_el)*icos_el*icos_az
i74 = ic87*(143*isin_el_p6 - 143*isin_el_p4 + 33*isin_el_p2 - 1)*icos_el_p2*icos_2az
i75 = ic86*(39*isin_el_p5 - 26*isin_el_p3 + 3*isin_el)*icos_el_p3*icos_3az
i76 = ic85*(65*isin_el_p4 - 26*isin_el_p2 + 1)*icos_el_p4*icos_4az
i77 = ic84*(5*isin_el_p3 - isin_el)*icos_el_p5*icos_5az
i78 = ic83*(15*isin_el_p2 - 1)*icos_el_p6*icos_6az
i79 = ic82*isin_el*icos_el_p7*icos_7az
i80 = ic81*icos_el_p8*icos_8az
;	if iorder > 7 goto c7
aout =	(1/81)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48 + 15*i49*a49 + 15*i50*a50 + 15*i51*a51 + 15*i52*a52 + 15*i53*a53 + 15*i54*a54 + 15*i55*a55 + 15*i56*a56 + 15*i57*a57 + 15*i58*a58 + 15*i59*a59 + 15*i60*a60 + 15*i61*a61 + 15*i62*a62 + 15*i63*a63 + 17*i64*a64 + 17*i65*a65 + 17*i66*a66 + 17*i67*a67 + 17*i68*a68 + 17*i69*a69 + 17*i70*a70 + 17*i71*a71 + 17*i72*a72 + 17*i73*a73 + 17*i74*a74 + 17*i75*a75 + 17*i76*a76 + 17*i77*a77 + 17*i78*a78 + 17*i79*a79 + 17*i80*a80)
end:
		xout			aout
endop
;;;;;;;;;;;


opcode	ambi_decode,	a,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn))
endop
opcode	ambi_decode,	aa,ii
iorder,ifn xin
		xout				ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn))
endop
opcode	ambi_decode,	aaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn))
endop
opcode	ambi_decode,	aaaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn)),
		ambi_decode1(iorder,table(7,ifn),table(8,ifn))
endop
opcode	ambi_decode,	aaaaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn)),
		ambi_decode1(iorder,table(7,ifn),table(8,ifn)),
		ambi_decode1(iorder,table(9,ifn),table(10,ifn))
endop
opcode	ambi_decode,	aaaaaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn)),
		ambi_decode1(iorder,table(7,ifn),table(8,ifn)),
		ambi_decode1(iorder,table(9,ifn),table(10,ifn)),
		ambi_decode1(iorder,table(11,ifn),table(12,ifn))
endop
opcode	ambi_decode,	aaaaaaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn)),
		ambi_decode1(iorder,table(7,ifn),table(8,ifn)),
		ambi_decode1(iorder,table(9,ifn),table(10,ifn)),
		ambi_decode1(iorder,table(11,ifn),table(12,ifn)),									ambi_decode1(iorder,table(13,ifn),table(14,ifn))
endop
opcode	ambi_decode,	aaaaaaaa,ii
iorder,ifn xin
		xout		ambi_decode1(iorder,table(1,ifn),table(2,ifn)),
		ambi_decode1(iorder,table(3,ifn),table(4,ifn)),
		ambi_decode1(iorder,table(5,ifn),table(6,ifn)),
		ambi_decode1(iorder,table(7,ifn),table(8,ifn)),
		ambi_decode1(iorder,table(9,ifn),table(10,ifn)),
		ambi_decode1(iorder,table(11,ifn),table(12,ifn)),								ambi_decode1(iorder,table(13,ifn),table(14,ifn)),
		ambi_decode1(iorder,table(15,ifn),table(16,ifn))
endop

;;;;;;;;;;;;

opcode	ambi_dec1_inph, a, iii		

; weights and norms up to 12th order
;iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
;					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight3D[][] init   8,8
iWeight3D     array  0.333333,0,0,0,0,0,0,0,
	0.5,0.1,0,0,0,0,0,0,
	0.6,0.2,0.0285714,0,0,0,0,0,
	0.666667,0.285714,0.0714286,0.0079365,0,0,0,0,
	0.714286,0.357143,0.119048,0.0238095,0.0021645,0,0,0,
	0.75,0.416667,0.166667,0.0454545,0.00757576,0.00058275,0,0,
	0.777778,0.466667,0.212121,0.0707071,0.016317,0.002331,0.0001554,0,
  	0.8,0.509091,0.254545,0.0979021,0.027972,0.0055944,0.0006993,0.00004114


iorder,iaz,iel	xin

iaz = $M_PI*iaz/180
iel = $M_PI*iel/180

a0=zar(0)
	if	iorder > 0 goto c0
aout = a0
	goto	end
c0:
a1=iWeight3D[iorder-1][0]*zar(1)
a2=iWeight3D[iorder-1][0]*zar(2)
a3=iWeight3D[iorder-1][0]*zar(3)
icos_el = cos(iel)
isin_el = sin(iel)
icos_az = cos(iaz)
isin_az = sin(iaz)
i1	=	icos_el*isin_az			; Y	 = Y(1,-1)
i2	=	isin_el				; Z	 = Y(1,0)
i3	=	icos_el*icos_az			; X	 = Y(1,1)
	if iorder > 1 goto c1
aout	=	(3/4)*(a0 + i1*a1 + i2*a2 + i3*a3)
	goto end
c1: 
a4=iWeight3D[iorder-1][1]*zar(4)
a5=iWeight3D[iorder-1][1]*zar(5)
a6=iWeight3D[iorder-1][1]*zar(6)
a7=iWeight3D[iorder-1][1]*zar(7)
a8=iWeight3D[iorder-1][1]*zar(8)

ic2	= sqrt(3)/2

icos_el_p2 = icos_el*icos_el
isin_el_p2 = isin_el*isin_el
icos_2az = cos(2*iaz)
isin_2az = sin(2*iaz)
icos_2el = cos(2*iel)
isin_2el = sin(2*iel)


i4 = ic2*icos_el_p2*isin_2az	; V = Y(2,-2)
i5	= ic2*isin_2el*isin_az		; S = Y(2,-1)
i6 = .5*(3*isin_el_p2 - 1)		; R = Y(2,0)
i7 = ic2*isin_2el*icos_az		; S = Y(2,1)
i8 = ic2*icos_el_p2*icos_2az	; U = Y(2,2)
	if iorder > 2 goto c2
aout	=	(1/3)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8)
	goto end
c2: 
a9=iWeight3D[iorder-1][2]*zar(9)
a10=iWeight3D[iorder-1][2]*zar(10)
a11=iWeight3D[iorder-1][2]*zar(11)
a12=iWeight3D[iorder-1][2]*zar(12)
a13=iWeight3D[iorder-1][2]*zar(13)
a14=iWeight3D[iorder-1][2]*zar(14)
a15=iWeight3D[iorder-1][2]*zar(15)

ic31 = sqrt(5/8)
ic32 = sqrt(15)/2
ic33 = sqrt(3/8)
icos_el_p3 = icos_el*icos_el_p2;
isin_el_p3 = isin_el*isin_el_p2;
icos_3az = cos(3*iaz);
isin_3az = sin(3*iaz);
icos_3el = cos(3*iel);
isin_3el = sin(3*iel);

i9 = ic31*icos_el_p3*isin_3az					; Q = Y(3,-3)
i10 = ic32*isin_el*icos_el_p2*isin_2az		; O = Y(3,-2)
i11 = ic33*icos_el*(5*isin_el_p2-1)*isin_az	; M = Y(3,-1)
i12 = .5*isin_el*(5*isin_el_p2-3)				; K = Y(3,0)
i13 = ic33*icos_el*(5*isin_el_p2-1)*icos_az	; L = Y(3,1)
i14 = ic32*isin_el*icos_el_p2*icos_2az		; N = Y(3,2)
i15 = ic31*icos_el_p3*icos_3az				; P = Y(3,3)
	if iorder > 3 goto c3
aout	=	(1/4)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15)
	goto end
c3:
a16=iWeight3D[iorder-1][3]*zar(16)
a17=iWeight3D[iorder-1][3]*zar(17)
a18=iWeight3D[iorder-1][3]*zar(18)
a19=iWeight3D[iorder-1][3]*zar(19)
a20=iWeight3D[iorder-1][3]*zar(20)
a21=iWeight3D[iorder-1][3]*zar(21)
a22=iWeight3D[iorder-1][3]*zar(22)
a23=iWeight3D[iorder-1][3]*zar(23)
a24=iWeight3D[iorder-1][3]*zar(24)

ic41 = (1/8)*sqrt(35)
ic42 =	(1/2)*sqrt(35/2)
ic43 = sqrt(5)/4
ic44 = sqrt(5/2)/4
icos_el_p4 = icos_el*icos_el_p3
isin_el_p4 = isin_el*isin_el_p3
icos_4az = cos(4*iaz)
isin_4az = sin(4*iaz)
icos_4el = cos(4*iel)
isin_4el = sin(4*iel)
i16 = ic41*icos_el_p4*isin_4az							; Y(4,-4)
i17 = ic42*isin_el*icos_el_p3*isin_3az					; Y(4,-3)
i18 = ic43*(7.*isin_el_p2 - 1.)*icos_el_p2*isin_2az	; Y(4,-2)
i19 = ic44*isin_2el*(7.*isin_el_p2 - 3.)*isin_az		; Y(4,-1)
i20 = (1/8)*(35.*isin_el_p4 - 30.*isin_el_p2 + 3.)	; Y(4,0)
i21 = ic44*isin_2el*(7.*isin_el_p2 - 3.)*icos_az		; Y(4,1)
i22 = ic43*(7.*isin_el_p2 - 1.)*icos_el_p2*icos_2az	; Y(4,2)
i23 = ic42*isin_el*icos_el_p3*icos_3az					; Y(4,3)
i24 = ic41*icos_el_p4*icos_4az							; Y(4,4)

	if iorder > 4 goto c4
aout	=	(1/5)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24)
	goto end
c4:

a25=iWeight3D[iorder-1][4]*zar(25)
a26=iWeight3D[iorder-1][4]*zar(26)
a27=iWeight3D[iorder-1][4]*zar(27)
a28=iWeight3D[iorder-1][4]*zar(28)
a29=iWeight3D[iorder-1][4]*zar(29)
a30=iWeight3D[iorder-1][4]*zar(30)
a31=iWeight3D[iorder-1][4]*zar(31)
a32=iWeight3D[iorder-1][4]*zar(32)
a33=iWeight3D[iorder-1][4]*zar(33)   
a34=iWeight3D[iorder-1][4]*zar(34)
a35=iWeight3D[iorder-1][4]*zar(35) 
ic51 = (3/8)*sqrt(7/2)
ic52 = (3/8)*sqrt(35)
ic53 = (1/8)*sqrt(35/2)
ic54 = sqrt(105)/4
ic55 = sqrt(15)/8
icos_el_p5 = icos_el*icos_el_p4
isin_el_p5 = isin_el*isin_el_p4
icos_5az = cos(5*iaz)
isin_5az = sin(5*iaz)
icos_5el = cos(5*iel)
isin_5el = sin(5*iel)
i25 = ic51*icos_el_p5*isin_5az										; Y(5,-5)
i26 = ic52*isin_el*icos_el_p4*isin_4az								; Y(5,-4)
i27 = ic53*(9*isin_el_p2 - 1)*icos_el_p3*isin_3az					; Y(5,-3)
i28 = ic54*isin_el*(3*isin_el_p2 - 1)*icos_el_p2*isin_2az		; Y(5,-2)
i29 = ic55*(21*isin_el_p4 - 14*isin_el_p3 + 1)*icos_el*isin_az	; Y(5,-1)
i30 = (1/8)*(63*isin_el_p5 - 70*isin_el_p3 + 15*isin_el)			; Y(5,0)
i31 = ic55*(21*isin_el_p4 - 14*isin_el_p3 + 1)*icos_el*icos_az	; Y(5,1)
i32 = ic54*isin_el*(3*isin_el_p2 - 1)*icos_el_p2*icos_2az;		; Y(5,2)
i33 = ic53*(9*isin_el_p2 - 1)*icos_el_p3*icos_3az					; Y(5,3)
i34 = ic52*isin_el*icos_el_p4*icos_4az								; Y(5,4)				
i35 = ic51*icos_el_p5*icos_5az										; Y(5,5)
	if iorder > 5 goto c5
aout =	(1/6)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35) 
	goto end
c5:

a36=iWeight3D[iorder-1][5]*zar(36)
a37=iWeight3D[iorder-1][5]*zar(37)
a38=iWeight3D[iorder-1][5]*zar(38)
a39=iWeight3D[iorder-1][5]*zar(39)
a40=iWeight3D[iorder-1][5]*zar(40)
a41=iWeight3D[iorder-1][5]*zar(41)
a42=iWeight3D[iorder-1][5]*zar(42)
a43=iWeight3D[iorder-1][5]*zar(43)
a44=iWeight3D[iorder-1][5]*zar(44)   
a45=iWeight3D[iorder-1][5]*zar(45)
a46=iWeight3D[iorder-1][5]*zar(46)
a47=iWeight3D[iorder-1][5]*zar(47)
a48=iWeight3D[iorder-1][5]*zar(48)
ic61 = (1/16)*sqrt(231/2)
ic62 = (3/8)*sqrt(77/2)
ic63 = (3/16)*sqrt(7)
ic64 = (1/8)*sqrt(105/2)
ic65 = (1/16)*sqrt(105/2)
ic66 = (1/16)*sqrt(21)
icos_el_p6 = icos_el*icos_el_p5
isin_el_p6 = isin_el*isin_el_p5
icos_6az = cos(6*iaz)
isin_6az = sin(6*iaz)
icos_6el = cos(6*iel)
isin_6el = sin(6*iel)
i36 = ic61*icos_el_p6*isin_6az
i37 = ic62*isin_el*icos_el_p5*isin_5az
i38 = ic63*(11*isin_el_p2 - 1)*icos_el_p4*isin_4az
i39 = ic64*isin_el*(11*isin_el_p2 - 3)*icos_el_p3*isin_3az
i40 = ic65*((33*isin_el_p4) - 18*isin_el_p2 + 1)*icos_el_p2*isin_2az
i41 = ic66*isin_2el*(33*isin_el_p4 - 30*isin_el_p2 + 5)*isin_az
i42 = (1/16)*(231*isin_el_p6 - 315*isin_el_p4 + 105*isin_el_p2 - 5)
i43 = ic66*isin_2el*(33*isin_el_p4 - 30*isin_el_p2 + 5)*icos_az
i44 = ic65*((33*isin_el_p4) - 18*isin_el_p2 + 1)*icos_el_p2*icos_2az
i45 = ic64*isin_el*(11*isin_el_p2 - 3)*icos_el_p3*icos_3az
i46 = ic63*(11*isin_el_p2 - 1)*icos_el_p4*icos_4az
i47 = ic62*isin_el*icos_el_p5*icos_5az
i48 = ic61*icos_el_p6*icos_6az
	if iorder > 6 goto c6
aout =	(1/7)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48) 
	goto end
c6:
a49=iWeight3D[iorder-1][6]*zar(49)
a50=iWeight3D[iorder-1][6]*zar(50)
a51=iWeight3D[iorder-1][6]*zar(51)
a52=iWeight3D[iorder-1][6]*zar(52)
a53=iWeight3D[iorder-1][6]*zar(53)
a54=iWeight3D[iorder-1][6]*zar(54)
a55=iWeight3D[iorder-1][6]*zar(55)
a56=iWeight3D[iorder-1][6]*zar(56)
a57=iWeight3D[iorder-1][6]*zar(57)   
a58=iWeight3D[iorder-1][6]*zar(58)
a59=iWeight3D[iorder-1][6]*zar(59)
a60=iWeight3D[iorder-1][6]*zar(60)
a61=iWeight3D[iorder-1][6]*zar(61)
a62=iWeight3D[iorder-1][6]*zar(62)
a63=iWeight3D[iorder-1][6]*zar(63)
ic71 = (3/32)*sqrt(143/3)
ic72 = (3/16)*sqrt(101/3)
ic73 = (3/32)*sqrt(77/3)
ic74 = (3/16)*sqrt(77/3)
ic75 = (3/32)*sqrt(7/3)
ic76 = (3/16)*sqrt(7/6)
ic77 = (1/32)*sqrt(7)
icos_el_p7 = icos_el*icos_el_p6
isin_el_p7 = isin_el*isin_el_p6
icos_7az = cos(7*iaz)
isin_7az = sin(7*iaz)
icos_7el = cos(7*iel)
isin_7el = sin(7*iel)
i49 = ic71*icos_el_p7*isin_7az
i50 = ic72*isin_el*icos_el_p6*isin_6az
i51 = ic73*(13*isin_el_p2 - 1)*icos_el_p5*isin_5az
i52 = ic74*(13*isin_el_p3 - 3*isin_el)*icos_el_p4*isin_4az
i53 = ic75*(143*isin_el_p4 - 66*isin_el_p2 + 3)*icos_el_p3*isin_3az
i54 = ic76*(143*isin_el_p5 - 110*isin_el_p3 + 15*isin_el)*icos_el_p2*isin_2az
i55 = ic77*(429*isin_el_p6 - 495*isin_el_p4 + 135*isin_el_p2 - 5)*icos_el*isin_az
i56 = (1/16)*(429*isin_el_p7 - 693*isin_el_p5 + 315*isin_el_p3 - 35*isin_el)
i57 = ic77*(429*isin_el_p6 - 495*isin_el_p4 + 135*isin_el_p2 - 5)*icos_el*icos_az
i58 = ic76*(143*isin_el_p5 - 110*isin_el_p3 + 15*isin_el)*icos_el_p2*icos_2az
i59 = ic75*(143*isin_el_p4 - 66*isin_el_p2 + 3)*icos_el_p3*icos_3az
i60 = ic74*(13*isin_el_p3 - 3*isin_el)*icos_el_p4*icos_4az
i61 = ic73*(13*isin_el_p2 - 1)*icos_el_p5*icos_5az
i62 = ic72*isin_el*icos_el_p6*icos_6az
i63 = ic71*icos_el_p7*icos_7az
	if iorder > 7 goto c7
aout =	(1/8)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48 + 15*i49*a49 + 15*i50*a50 + 15*i51*a51 + 15*i52*a52 + 15*i53*a53 + 15*i54*a54 + 15*i55*a55 + 15*i56*a56 + 15*i57*a57 + 15*i58*a58 + 15*i59*a59 + 15*i60*a60 + 15*i61*a61 + 15*i62*a62 + 15*i63*a63) 
	goto end
c7:
a64=iWeight3D[iorder-1][7]*zar(64)
a65=iWeight3D[iorder-1][7]*zar(65)
a66=iWeight3D[iorder-1][7]*zar(66)
a67=iWeight3D[iorder-1][7]*zar(67)
a68=iWeight3D[iorder-1][7]*zar(68)
a69=iWeight3D[iorder-1][7]*zar(69)
a70=iWeight3D[iorder-1][7]*zar(70)
a71=iWeight3D[iorder-1][7]*zar(71)
a72=iWeight3D[iorder-1][7]*zar(72)   
a73=iWeight3D[iorder-1][7]*zar(73)
a74=iWeight3D[iorder-1][7]*zar(74)
a75=iWeight3D[iorder-1][7]*zar(75)
a76=iWeight3D[iorder-1][7]*zar(76)
a77=iWeight3D[iorder-1][7]*zar(77)
a78=iWeight3D[iorder-1][7]*zar(78)
a79=iWeight3D[iorder-1][7]*zar(79)
a80=iWeight3D[iorder-1][7]*zar(80)
ic81 = (3/128)*sqrt(715)
ic82 = (3/32)*sqrt(715)
ic83 = (1/32)*sqrt(429/2)
ic84 = (3/32)*sqrt(1001) 
ic85 = (3/64)*sqrt(77)
ic86 = (1/32)*sqrt(1155)
ic87 = (3/32)*sqrt(35/2)
ic88 = (3/32)
icos_el_p8 = icos_el*icos_el_p7
isin_el_p8 = isin_el*isin_el_p7
icos_8az = cos(8*iaz)
isin_8az = sin(8*iaz)
icos_8el = cos(8*iel)
isin_8el = sin(8*iel)
i64 = ic81*icos_el_p8*isin_8az
i65 = ic82*isin_el*icos_el_p7*isin_7az
i66 = ic83*(15*isin_el_p2 - 1)*icos_el_p6*isin_6az
i67 = ic84*(5*isin_el_p3 - isin_el)*icos_el_p5*isin_5az
i68 = ic85*(65*isin_el_p4 - 26*isin_el_p2 + 1)*icos_el_p4*isin_4az
i69 = ic86*(39*isin_el_p5 - 26*isin_el_p3 + 3*isin_el)*icos_el_p3*isin_3az
i70 = ic87*(143*isin_el_p6 - 143*isin_el_p4 + 33*isin_el_p2 - 1)*icos_el_p2*isin_2az
i71 = ic88*(715*isin_el_p7 - 1001*isin_el_p5 + 385*isin_el_p3 - 35*isin_el)*icos_el*isin_az
i72 = (1/128)*(6435*isin_el_p8 - 12012*isin_el_p6 + 6930*isin_el_p4 - 1260*isin_el_p2 + 35)
i73 = ic88*(715*isin_el_p7 - 1001*isin_el_p5 + 385*isin_el_p3 - 35*isin_el)*icos_el*icos_az
i74 = ic87*(143*isin_el_p6 - 143*isin_el_p4 + 33*isin_el_p2 - 1)*icos_el_p2*icos_2az
i75 = ic86*(39*isin_el_p5 - 26*isin_el_p3 + 3*isin_el)*icos_el_p3*icos_3az
i76 = ic85*(65*isin_el_p4 - 26*isin_el_p2 + 1)*icos_el_p4*icos_4az
i77 = ic84*(5*isin_el_p3 - isin_el)*icos_el_p5*icos_5az
i78 = ic83*(15*isin_el_p2 - 1)*icos_el_p6*icos_6az
i79 = ic82*isin_el*icos_el_p7*icos_7az
i80 = ic81*icos_el_p8*icos_8az
;	if iorder > 7 goto c7
aout =	(1/9)*(a0 + 3*i1*a1 + 3*i2*a2 + 3*i3*a3 + 5*i4*a4 + 5*i5*a5 + 5*i6*a6 + 5*i7*a7 + 5*i8*a8 + 7*i9*a9 + 7*i10*a10 + 7*i11*a11 + 7*i12*a12 + 7*i13*a13 + 7*i14*a14 + 7*i15*a15 + 9*i16*a16 + 9*i17*a17 + 9*i18*a18 + 9*i19*a19 + 9*i20*a20 + 9*i21*a21 + 9*i22*a22 + 9*i23*a23 + 9*i24*a24 + 11*i25*a25 + 11*i26*a26 + 11*i27*a27 + 11*i28*a28 + 11*i29*a29 + 11*i30*a30 + 11*i31*a31 + 11*i32*a32 + 11*i33*a33 + 11*i34*a34 + 11*i35*a35 + 13*i36*a36 + 13*i37*a37 + 13*i38*a38 + 13*i39*a39 + 13*i40*a40 + 13*i41*a41 + 13*i42*a42 + 13*i43*a43 + 13*i44*a44 + 13*i45*a45 + 13*i46*a46 + 13*i47*a47 + 13*i48*a48 + 15*i49*a49 + 15*i50*a50 + 15*i51*a51 + 15*i52*a52 + 15*i53*a53 + 15*i54*a54 + 15*i55*a55 + 15*i56*a56 + 15*i57*a57 + 15*i58*a58 + 15*i59*a59 + 15*i60*a60 + 15*i61*a61 + 15*i62*a62 + 15*i63*a63 + 17*i64*a64 + 17*i65*a65 + 17*i66*a66 + 17*i67*a67 + 17*i68*a68 + 17*i69*a69 + 17*i70*a70 + 17*i71*a71 + 17*i72*a72 + 17*i73*a73 + 17*i74*a74 + 17*i75*a75 + 17*i76*a76 + 17*i77*a77 + 17*i78*a78 + 17*i79*a79 + 17*i80*a80)
end:
		xout			aout
endop

;;;;;;;;;;



opcode	ambi_dec_inph,	a,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn))
endop
opcode	ambi_dec_inph,	aa,ii
iorder,ifn xin
		xout				ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn))
endop
opcode	ambi_dec_inph,	aaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn))
endop
opcode	ambi_dec_inph,	aaaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn)),
		ambi_dec1_inph(iorder,table(7,ifn),table(8,ifn))
endop
opcode	ambi_dec_inph,	aaaaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn)),
		ambi_dec1_inph(iorder,table(7,ifn),table(8,ifn)),
		ambi_dec1_inph(iorder,table(9,ifn),table(10,ifn))
endop
opcode	ambi_dec_inph,	aaaaaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn)),
		ambi_dec1_inph(iorder,table(7,ifn),table(8,ifn)),
		ambi_dec1_inph(iorder,table(9,ifn),table(10,ifn)),
		ambi_dec1_inph(iorder,table(11,ifn),table(12,ifn))
endop
opcode	ambi_dec_inph,	aaaaaaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn)),
		ambi_dec1_inph(iorder,table(7,ifn),table(8,ifn)),
		ambi_dec1_inph(iorder,table(9,ifn),table(10,ifn)),
		ambi_dec1_inph(iorder,table(11,ifn),table(12,ifn)),									ambi_dec1_inph(iorder,table(13,ifn),table(14,ifn))
endop
opcode	ambi_dec_inph,	aaaaaaaa,ii
iorder,ifn xin
		xout		ambi_dec1_inph(iorder,table(1,ifn),table(2,ifn)),
		ambi_dec1_inph(iorder,table(3,ifn),table(4,ifn)),
		ambi_dec1_inph(iorder,table(5,ifn),table(6,ifn)),
		ambi_dec1_inph(iorder,table(7,ifn),table(8,ifn)),
		ambi_dec1_inph(iorder,table(9,ifn),table(10,ifn)),
		ambi_dec1_inph(iorder,table(11,ifn),table(12,ifn)),								ambi_dec1_inph(iorder,table(13,ifn),table(14,ifn)),
		ambi_dec1_inph(iorder,table(15,ifn),table(16,ifn))
endop

;;;;;;;;;;;;


opcode	ambi_write_B,	0, Sii	
Sname,iorder,iformat		xin
	if(iorder == 1) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3)
	elseif(iorder == 2) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
	zar(7),zar(8)
	elseif(iorder == 3) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15)
	elseif(iorder == 4) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24)
	elseif(iorder == 5) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35)
	elseif(iorder == 6) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36),zar(37),zar(38),zar(39),zar(40),zar(41),zar(42),zar(43),zar(44),zar(45),zar(46),zar(47),zar(48)
	elseif(iorder == 7) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36),zar(37),zar(38),zar(39),zar(40),zar(41),zar(42),zar(43),zar(44),zar(45),zar(46),zar(47),zar(48),zar(49),zar(50),zar(51),zar(52),zar(53),zar(54),zar(55),zar(56),zar(57),zar(58),zar(59),zar(60),zar(61),zar(62),zar(63)
	elseif(iorder == 8) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36),zar(37),zar(38),zar(39),zar(40),zar(41),zar(42),zar(43),zar(44),zar(45),zar(46),zar(47),zar(48),zar(49),zar(50),zar(51),zar(52),zar(53),zar(54),zar(55),zar(56),zar(57),zar(58),zar(59),zar(60),zar(61),zar(62),zar(63),zar(64),zar(65),zar(66),zar(67),zar(68),zar(69),zar(70),zar(71),zar(72),zar(73),zar(74),zar(75),zar(76),zar(77),zar(78),zar(79),zar(80)
	endif
endop

;;;;;;;;;;;


opcode	ambi_read_B, 0,	Si		
Sname,iorder			xin
if(iorder == 1) then

a1,a2,a3,a4	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
endif	
if(iorder == 2) then
a1,a2,a3,a4,a5,a6,a7,a8,a9	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
endif
if(iorder == 3) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
endif
if(iorder == 4) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
endif
if(iorder == 5) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
endif
if(iorder == 6) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
	zawm	a37,36	
	zawm	a38,37
	zawm	a39,38
	zawm	a40,39
	zawm	a41,40	
	zawm	a42,41
	zawm	a43,42	
	zawm	a44,43
	zawm	a45,44	
	zawm	a46,45
	zawm	a47,46	
	zawm	a48,47
	zawm	a49,48
endif
if(iorder == 7) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,a60,a61,a62,a63,a64	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
	zawm	a37,36	
	zawm	a38,37
	zawm	a39,38
	zawm	a40,39
	zawm	a41,40	
	zawm	a42,41
	zawm	a43,42	
	zawm	a44,43
	zawm	a45,44	
	zawm	a46,45
	zawm	a47,46	
	zawm	a48,47
	zawm	a49,48
	zawm	a50,49
	zawm	a51,50	
	zawm	a52,51
	zawm	a53,52	
	zawm	a54,53
	zawm	a55,54	
	zawm	a56,55
	zawm	a57,56	
	zawm	a58,57
	zawm	a59,58
	zawm	a60,59
	zawm	a61,60	
	zawm	a62,61
	zawm	a63,62	
	zawm	a64,63
endif
if(iorder == 8) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,a70,a71,a72,a73,a74,a75,a76,a77,a78,a79,a80,a81	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
	zawm	a37,36	
	zawm	a38,37
	zawm	a39,38
	zawm	a40,39
	zawm	a41,40	
	zawm	a42,41
	zawm	a43,42	
	zawm	a44,43
	zawm	a45,44	
	zawm	a46,45
	zawm	a47,46	
	zawm	a48,47
	zawm	a49,48
	zawm	a50,49
	zawm	a51,50	
	zawm	a52,51
	zawm	a53,52	
	zawm	a54,53
	zawm	a55,54	
	zawm	a56,55
	zawm	a57,56	
	zawm	a58,57
	zawm	a59,58
	zawm	a60,59
	zawm	a61,60	
	zawm	a62,61
	zawm	a63,62	
	zawm	a64,63
	zawm	a65,64	
	zawm	a66,65
	zawm	a67,66	
	zawm	a68,67
	zawm	a69,68
	zawm	a70,69
	zawm	a71,70	
	zawm	a72,71
	zawm	a73,72	
	zawm	a74,73
	zawm	a75,74	
	zawm	a76,75
	zawm	a77,76	
	zawm	a78,77
	zawm	a79,78
	zawm	a80,79
	zawm	a81,80	
endif

endop

;;;;;;;;;;;;

opcode xyz_to_aed, kkk, kkk  
kx,ky,kz		xin
kdist =	sqrt(kx*kx+ky*ky+kz*kz)
kaz 		taninv2	ky,kx
kel			taninv2	kz,sqrt(kx*kx+ky*ky)
			xout		kaz, kel, kdist
endop

